]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
NetworkMenu/NMConnectionDevice: grab the connection before using it
authorGiovanni Campagna <gcampagna@src.gnome.org>
Thu, 3 Oct 2013 12:20:31 +0000 (14:20 +0200)
committerGiovanni Campagna <gcampagna@src.gnome.org>
Thu, 3 Oct 2013 14:03:41 +0000 (16:03 +0200)
If the active connection for the device is not the primary or
activating globally, it won't have the _connection and _primaryDevice
expando properties, so grab them from the settings object.

https://bugzilla.gnome.org/show_bug.cgi?id=709043

js/ui/status/network.js

index c78c6696ec309c2807fd84e0768ec35104f4eb9a..cc8d6c60afd1bf2dc853f785346814cf5e557388 100644 (file)
@@ -73,6 +73,16 @@ function ssidToLabel(ssid) {
     return label;
 }
 
+function ensureActiveConnectionProps(active, settings) {
+    if (!active._connection) {
+        active._connection = settings.get_connection_by_path(active.connection);
+
+        // This list is guaranteed to have only one device in it.
+        let device = active.get_devices()[0]._delegate;
+        active._primaryDevice = device;
+    }
+}
+
 const NMConnectionItem = new Lang.Class({
     Name: 'NMConnectionItem',
 
@@ -267,9 +277,10 @@ const NMConnectionDevice = new Lang.Class({
     Extends: NMConnectionSection,
     Abstract: true,
 
-    _init: function(client, device) {
+    _init: function(client, device, settings) {
         this.parent(client);
         this._device = device;
+        this._settings = settings;
 
         this._autoConnectItem = this.item.menu.addAction(_("Connect"), Lang.bind(this, this._autoConnect));
         this.item.menu.addSettingsAction(_("Network Settings"), 'gnome-network-panel.desktop');
@@ -300,6 +311,7 @@ const NMConnectionDevice = new Lang.Class({
         this._activeConnection = this._device.active_connection;
 
         if (this._activeConnection) {
+            ensureActiveConnectionProps(this._activeConnection, this._settings);
             let item = this._connectionItems.get(this._activeConnection._connection.get_uuid());
             item.setActiveConnection(this._activeConnection);
         }
@@ -398,8 +410,8 @@ const NMDeviceModem = new Lang.Class({
     Extends: NMConnectionDevice,
     category: NMConnectionCategory.WWAN,
 
-    _init: function(client, device) {
-        this.parent(client, device);
+    _init: function(client, device, settings) {
+        this.parent(client, device, settings);
         this._mobileDevice = null;
 
         let capabilities = device.current_capabilities;
@@ -1425,28 +1437,18 @@ const NMApplet = new Lang.Class({
         devices.splice(pos, 1);
     },
 
-    _ensureActiveConnectionProps: function(a) {
-        if (!a._connection) {
-            a._connection = this._settings.get_connection_by_path(a.connection);
-
-            // This list is guaranteed to have only one device in it.
-            let device = a.get_devices()[0]._delegate;
-            a._primaryDevice = device;
-        }
-    },
-
     _getMainConnection: function() {
         let connection;
 
         connection = this._client.get_primary_connection();
         if (connection) {
-            this._ensureActiveConnectionProps(connection);
+            ensureActiveConnectionProps(connection, this._settings);
             return connection;
         }
 
         connection = this._client.get_activating_connection();
         if (connection) {
-            this._ensureActiveConnectionProps(connection);
+            ensureActiveConnectionProps(connection, this._settings);
             return connection;
         }